package com.cskaoyan.javse.oop2._3review.stage2.util;

import com.cskaoyan.javse.oop2._3review.stage2.model.Student;
import com.cskaoyan.javse.oop2._3review.stage2.model.StudentList;
import org.junit.Test;

import java.util.Scanner;

/**
 * 键盘录入工具类
 *
 * @since 10:07
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class ScannerUtils {
    // 既然是工具类,应该直接私有化构造器
    private ScannerUtils() {
    }

    // 需要使用一个Scanner对象
    private static final Scanner sc = new Scanner(System.in);
    // private static final StudentList sls = new StudentList();


    /*
        提供键盘录入int,作为菜单选项
     */
    public static int getInteger() {
        String numStr = sc.nextLine();
        return Integer.parseInt(numStr);
    }

    /*
        键盘录入学生对象
     */
    public static Student getStudentInstance(StudentList sls) {
        /*
            键盘录入各种成员变量的取值,然后构造器创建对象即可
         */
        System.out.println("开始键盘录入学生信息.....");
        System.out.println("请输入学号: ");
        int stuId = Integer.parseInt(sc.nextLine());
        // 学号是唯一的,如何实现呢?
        if (!sls.judgeStuIdOnly(stuId)) {
            // 学号重复了
            System.out.println("学号重复了,请重新输入!");
            return null;
        }
        Student stu = getCommonStudent();
        stu.setStuId(stuId);
        return stu;
    }

    /**
     * 该方法作为update方法的参数,不修改学号,可以修改别的内容.
     * @since 11:23
     * @param oldStuId 学号不能修改,所以需要传入原先学生对象的学号
     * @return com.cskaoyan.javse.oop2._3review.stage2.model.Student
     * @author wuguidong@cskaoyan.onaliyun.com
     */
    public static Student getUpdateStudentInstance(int oldStuId) {
        System.out.println("开始键盘录入学生信息.....");
        Student stu = getCommonStudent();
        stu.setStuId(oldStuId);
        return stu;
    }

    /**
     * 抽取代码,复用能够复用的部分
     * @since 11:29
     * @return com.cskaoyan.javse.oop2._3review.stage2.model.Student
     * @author wuguidong@cskaoyan.onaliyun.com
     */
    private static Student getCommonStudent() {
        System.out.println("请输入姓名: ");
        String name = sc.nextLine();
        System.out.println("请输入性别: ");
        String gender = sc.nextLine();
        System.out.println("请输入年龄: ");
        int age = Integer.parseInt(sc.nextLine());
        System.out.println("请输入班级: ");
        String grade = sc.nextLine();
        System.out.println("请输入手机号: ");
        String phoneNum = sc.nextLine();
        return new Student(name, gender, age, grade, phoneNum);
    }

}
